# -*- coding: utf-8 -*-


"""
json格式 利用的是 jsonpath模块进行提取数据

需要做数据提取的是: html
借助第三方模块: lxml, 使用xpath语法解析html数据

换源安装地址: https://blog.csdn.net/qq_41782425/article/details/127241938

换源地址怎么用: pip install 第三名模块名 -i 换源地址(https://pypi.tuna.tsinghua.edu.cn/simple/)
"""

from lxml import etree  # 导入模块

# 2.模拟的是网页的源代码
html = '''
<li>
    <div class="item">
        <div class="pic">
            <em class="em">1</em>
            <a href="https://movie.douban.com/subject/1292052/">
                <img width="100" alt="肖申克的救赎" src="https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.webp" class="">
            </a>
        </div>
        <div class="info">
            <div class="hd">
                <a href="https://movie.douban.com/subject/1292052/" class="">
                    <span class="title">肖申克的救赎</span>
                    <span class="title">&nbsp;/&nbsp;The Shawshank Redemption</span>
                    <span class="other">&nbsp;/&nbsp;月黑高飞(港)  /  刺激1995(台)</span>
                </a>
                <span class="playable">[可播放]</span>
            </div>
            <div class="bd">
                <p class="quote1">
                    导演: 弗兰克·德拉邦特 Frank Darabont&nbsp;&nbsp;&nbsp;主演: 蒂姆·罗宾斯 Tim Robbins /...<br>
                    1994&nbsp;/&nbsp;美国&nbsp;/&nbsp;犯罪 剧情
                </p>                       
                <div>
                        <span class="rating5-t"></span>
                        <span class="rating_num" property="v:average">9.7</span>
                        <span property="v:best" content="10.0"></span>
                        <span>2833257人评价</span>
                </div>
                <p class="quote">
                    quote
                    <a>
                        <span class="inq">希望让人自由。</span>
                    </a>
                </p>
            </div>
        </div>
    </div>
</li>
'''

# res.text
# 3. 转化(xpath不可以直接适用于html)
tree = etree.HTML(html) # etree.HTML(网页源代码)
# tree = etree.HTML(res.text)

# 4. 数据的提取
# // 不需要考虑标签位置，直接定位，如果没有查找到对应的元素，返回的是空列表
# span = tree.xpath('//span')
# print(span) # span标签元素，  返回的数据类型是list， 查找所有的span标签，并且存放到列表当中

# 需求: 获取img标签， 只有一个元素，返回的也是列表
# img = tree.xpath('//img')
# print(img)

# 需求: 获取p标签下的span标签
# /: 找当前标签的子标签  也就是找p标签的子标签
# span = tree.xpath('//p/span')
# print(span)


# <em class="em">1</em> 标签的文本内容
# /text(): 获取文本内容
# em = tree.xpath('//em/text()')
# print(em)

# 找所有的span下的文本内容， 将内容依次存放到列表当中
# span = tree.xpath('//span/text()')
# print(span)


# 图片链接，视频链接，音频连接，跳转页面的链接(属性值)
# 需求: 获取img标签里面属性值
# img = tree.xpath('//img/@src')
# img_alt = tree.xpath('//img/@alt')
# print(img,img_alt)

# 根据属性值做精确定位
# span = tree.xpath('//span[@class="rating_num"]/text()')
# print(span)

# span = tree.xpath('//div[@class="bd"]/div/span/text()')
# print(span)


# 获取电影名称
# span = tree.xpath('//span[@class="title"]/text()')
# print(''.join(span))

# 需求: 只需要获取第一个标题的内容: 通过位置定位
# title = tree.xpath('//div[@class="hd"]/a/span[1]/text()')
# print(title)


# 模糊匹配
p = tree.xpath('//p[@class="quote"]/text()')
# p = tree.xpath('//p[contains(@class, "quote")]/text()')
print(p)


# p = tree.xpath('//span')
# print(p)


"""
pip install lxml
pip install requests
pip install retrying
pip install jsonpath
"""